package com.cq.hd.order.service;

import com.cq.hd.order.api.dto.MonthSettleBillWithdrawalDto;
import com.cq.hd.order.api.vo.MonthSettleBillVo;

import java.util.List;

/**
 * 月度结算单
 */
public interface TbMonthSettleBillService {

    /**
     * 执行月度结算，生成月度结算账单
     * 执行对象：orderSettleBill商户补贴
     */
    void executeMonthlySettlement();

    /**
     * 执行商户本金二次结算 for 结算池商户本金提现提现
     */
    void executeMerchantAmtSettlement();

    /*
     * 获取商户待提现月度账单
     */
    List<MonthSettleBillVo> getMerchantWaitMonthSettleBill(Long merchantId, Integer type);

    /*
     * 根据商户id，月度结算单id，获取待提现的结算单列表
     */
    List<MonthSettleBillVo> getAvailableMonthSettleBillByIds(Long merchantId, List<Long> ids);

    /*
     * 更新月度结算单提现状态并写入 提现-月度结算单 映射关系表
     */
    int withdrawalByDto(List<MonthSettleBillWithdrawalDto> monthSettleBillWithdrawalDtos);

    /*
     * 提现审核，更新月度结算单状态
     */
    boolean withdrawalUpdateStatus(Long withdrawalId, Integer auditState);
}
